package com.java.io.character_stream;

import java.io.FileReader;
import java.io.IOException;

/**
 * 字符流读取操作
 */
public class FileReaderDemo {

    /**
     * 读取文件
     * @param path  文件路径
     * @param fileName  文件名
     * @throws IOException
     */
    public void readFromFile(String path, String fileName) throws IOException {
        // 01. 要保证该文件是已经存在的，如果不存在，会发生异常FileNotFoundException
        FileReader fr = new FileReader(path + fileName);

        // 02. 调用读取流对象的read方法。
        //read():一次读一个字符。而且会自动往下读。
        int ch = 0;
        while ( ( ch = fr.read() ) != -1) {
            System.out.println("ch=" + (char)ch );
        }
        /*
        while ( true ) {
            int ch = fr.read();
            if(ch == -1)
                break;
            System.out.println("ch="+(char)ch);
        }
        */
        fr.close();
    }

    /**
     * 通过字符数组进行读取（常用）
     * @param path  文件路径
     * @param fileName  文件名
     * @throws IOException
     */
    public void readArrayFromFile(String path, String fileName) throws IOException {
        FileReader fr = new FileReader(path + fileName);

        // 01. 定义一个字符数组。用于存储读到字符。
        //该 read(char[]) 返回的是读到字符个数。
        char[] buf = new char[1024];
        int num = 0 ;
        while ( ( num = fr.read(buf) ) != -1 ) {
            System.out.println( new String(buf, 0, num)) ;
        }

        fr.close();
    }
}
